<?php namespace Common\Model;
use Hdphp\Model\Model;
class Arc extends Model{
	protected $table = "article";
	//自动验证
	protected $validate = array(
		array('title','required','文章标题必填',3,3)
	);
	//自动完成，添加文章是有些字段非用户添加，需要用到自动完成，将数据添加到数据表中
	protected $auto = array(
		//点击次数
		array('click',100,'string',3,3),
		//发布时间
		array('sendtime','time','function',3,1),
		//修改时间
		array('updatetime','time','function',3,2),
		//缩略图
		array('thumb','up','method',3,3),
		//用户uid
		array('user_uid','uid','method',3,1)
	);
	//获取当前用户的uid	
	public function uid(){
		//通过前面用户登陆成功后台时，会存入一个session值，此处可以获取，session为超全局
		return $_SESSION['uid'];
	}
	//获取上传路径
	public function up(){
		//如果有隐藏域，Q函数会获取到，证明是修改，直接返回原地址
		if(Q('post.thumb')) return Q('post.thumb');
		//框架中的上传文件    判断类型						文件大小
		$files = Upload::type('jpg,png,gif,jpeg')->size(2000000)->make();
//		p($files);exit;
		//如果$files不为空，为真	
		if($files){
			//返回文件上传的路径，用于上面自动完成存入数据表
			return $files[0]['path'];
		}else{
			//当files为空时为假走else，此时
			//如果$_FILES中的错误不为4，则表示其不是文件文上传错误，而是其他错误
			if($_FILES['thumb']['error']!=4){
				//返回框架中upload判断的错误信息复制给model中的error错误
				$this->error = Upload::getError();
			}
			//当错误为4时，表示用户未上传文件，此时返回一个空字符串，写入表中，避免null类型，还有
			//文章不一定要上传图片，所以用户可以不传
			return '';	
		}
	}
	//添加数据方法
	public function addData(){
		//自动验证文章标题
		if(!$this->create()) return false;
		//验证上传
		if($this->error) return false;
		//自动验证文章内容
		$arcDataModel = new \Common\Model\Arcdata;
		//如果文章内容表中的自动验证未通过
		if(!$arcDataModel->create()){
			//提示错误
			$this->error = $arcDataModel->getError();
			return false;	
		};
		//添加数据
		$aid = $this->add();
		
		//添加文章标签表内容
		$arcTagModel = new \Common\Model\Arctag;
		//标签可以多选，所以传过来为一个数组，在用q函数时，要给默认一个空数组，避免遍历出错
		foreach(Q('post.tag_tid',array()) as $v){
//			重新组合一个数组，字段名作为key值，数据作为value值
			$data = array(
				'article_aid'=>$aid,
				'tag_tid'=>$v
			);
			//上面组合好的数组框架会将其转化为sql语句对应添加到表中
			$arcTagModel->add($data);
		}
		//添加文章内容
		//组合文章内容数组，字段名作为key值，数据作为value值
		$data = array(
			'keywords'=>Q('post.keywords'),
			'des'=>Q('post.des'),
			'content'=>Q('post.content'),
			'article_aid'=>$aid
		);
		//上面组合好的数组框架会将其转化为sql语句对应添加到表中
		$arcDataModel->add($data);
		
		return true;
	}
	//修改数据
	public function editData(){
		//先执行自动验证判断文章标题
		if(!$this->create()) return false;
		//判断上传文件是否错误
		if($this->error) return false;
		//实例化文章内容表
		$arcDataModel = new \Common\Model\Arcdata;
		//自动验证文章内容不能为空
		if(!$arcDataModel->create()){
			$this->error = $arcDataModel->getError();
			return false;
		}
		
		//添加文章表
		$this->save();
		
		//获取aid
		$aid = Q('get.aid',0,'intval');
		//修改内容表中的数据
		$arcDataModel->where("article_aid={$aid}")->save();
		//实例化标签表
		$arcTagModel = new \Common\Model\Arctag;
		$arcTagModel->where("article_aid={$aid}")->delete();
		//循环遍历传过来的数组标签，将文章id和标签id重组为一个键名为字段名，键值为内容
		foreach(Q('post.tag_tid',array()) as $tid){
			//循环遍历重组数组
			$arcTagData = array(
				"article_aid"=>$aid,
				"tag_tid"=>$tid
			);
			//执行添加方法
			$arcTagModel->add($arcTagData);
		}
		return true;
	}
}














 ?>